package cn.iotab.iotkit.transport.api.access.model.message;


import cn.iotab.iotkit.transport.api.access.model.custom.property.PropertyReadMessage;
import cn.iotab.iotkit.transport.api.access.model.custom.property.PropertyReadMessageReply;
import com.alibaba.fastjson.JSONObject;

/**
 * 设备消息
 *
 * 属性：
 * @see PropertyReadMessage
 * @see PropertyReadMessageReply
 *
 * @see cn.iotab.iotkit.transport.api.access.model.custom.property.PropertyPushMessage
 * @see cn.iotab.iotkit.transport.api.access.model.custom.property.PropertyPushMessageReply
 *
 *
 * 功能/服务：
 * @see cn.iotab.iotkit.transport.api.access.model.custom.function.FunctionInvokeMessage
 * @see cn.iotab.iotkit.transport.api.access.model.custom.function.FunctionInvokeMessageReply
 *
 * 事件：
 * @see cn.iotab.iotkit.transport.api.access.model.custom.event.EventMessage
 *
 *
 */
public interface DeviceMessage extends Message{

    /**
     * 转换得到原始待发送消息
     * @return
     */
    OriginMessage toOriginMessage();
    /**
     * 消息版本
     */
    String getMessageVersion();

    /**
     * 物模型的Type
     * @return
     */
    String getOriginType();

    /**
     * 是否需要响应
     */
    boolean needAck();

    /**
     * 消息内容
     * @return
     */
    JSONObject getJsonParam();

}
